home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
bankma.zip
/
BANKTRN.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-08-19
|
22KB
|
867 lines
{ ----------------------------------------------------------------------- }
{ Source file: BANKTRN.PAS }
{ Application: Bank Manager }
{ Version : 1.0 }
{ Created : 08/19/91 }
{ Updates : }
{ }
{ Description: Maintain account transaction records. }
{ Notes : }
{ ----------------------------------------------------------------------- }
Unit Banktrn;
{$R BANKTRN.RES}
interface
uses
Strings, WinTypes, WinProcs, WObjects, WinDOS;
type
AccRec =
record
AccType : array[0..12] of char;
AccNum : array[0..20] of char;
AccBal : real;
AccBank : array[0..18] of char;
AccCheck: integer;
end;
PTransRep = ^TTransRep;
TTransRep =
object( TDialog)
CurrYr,
CurrMo: integer;
constructor Init( AParent: PWindowsObject; ATitle, AccN: PChar; Last: boolean);
procedure SetupWindow; virtual;
procedure Handle103( var Msg: TMessage); virtual id_First + 103;
function GetBalance( AccN: PChar): real; virtual;
function FillList: boolean; virtual;
end;
PTransfer = ^TTransfer;
TTransfer =
object( TDialog)
RecN: integer;
constructor Init( AParent: PWindowsObject; ATitle: PChar);
procedure OK( var Msg: TMessage); virtual id_First + id_OK;
function CanClose: boolean; virtual;
procedure SetupWindow; virtual;
procedure FillCombo( Item: integer; Except: PChar); virtual;
function GetBalance( AccN: PChar): real; virtual;
procedure UpdateBalance; virtual;
procedure UpdateActivity; virtual;
procedure Handle101( var Msg: TMessage); virtual id_First + 101;
procedure Handle102( var Msg: TMessage); virtual id_First + 102;
end;
PTransact = ^TTransact;
TTransact =
object( TDialog)
constructor Init( AParent: PWindowsObject; ATitle, AccN, AccT: PChar; M: boolean);
procedure SetupWindow; virtual;
function CanClose: boolean; virtual;
procedure OK( var Msg: TMessage); virtual id_First + id_OK;
procedure Cancel( var Msg: TMessage); virtual id_First + id_Cancel;
procedure HandleTrans( var Msg: TMessage); virtual id_First + 103;
procedure HandleDate( var Msg: TMessage); virtual id_First + 104;
procedure HandleCheck( var Msg: TMessage); virtual id_First + 105;
procedure HandleCredit( var Msg: TMessage); virtual id_First + 106;
procedure HandleDebit( var Msg: TMessage); virtual id_First + 107;
procedure HandleNote( var Msg: TMessage); virtual id_First + 108;
procedure GetAccountBalance; virtual;
procedure FillTransactCombo; virtual;
procedure ClearFields; virtual;
procedure UpdateActivity; virtual;
procedure UpdateBalance; virtual;
end;
implementation
const
AccFile = 'BANKACC.DTA';
const
ButtonMonth: array[1..12] of string[9] = ( 'January', 'February', 'March', 'April',
'May', 'June', 'July', 'August', 'September',
'October', 'November', 'December');
const
Months: array[1..12] of string[3] = ( 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN',
'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC');
type
TransRec =
record
TransType: array[0..31] of char;
end;
ActRec =
record
AccNum : array[0..20] of char;
Trans : array[0..31] of char;
Credit : real;
Debit : real;
Balance: real;
Check : integer;
Date : array[0..9] of char;
Notes : array[0..66] of char;
end;
var
Activity,
GMulti : boolean;
GAccNum: array[0..20] of Char;
GAccT : array[0..12] of char;
GAccBal: array[0..10] of Char;
PStr : string[12];
AccF : file of AccRec;
GAccR : AccRec;
ActF : file of ActRec;
GActR : ActRec;
GCheck : integer;
GOldBal,
GNewBal: real;
{ --------------------- }
{ TTransRep Methods: }
{ --------------------- }
function TTransRep.GetBalance( AccN: PChar): real;
begin
assign( AccF, AccFile);
reset( AccF);
repeat
read( AccF, GAccR);
until ( FilePos( AccF) = FileSize( AccF)) or ( StrComp( GAccR.AccNum, AccN) = 0);
if StrComp( GAccR.AccNum, AccN) = 0 then
GetBalance := GAccR.AccBal
else
GetBalance := 0.0;
close( AccF);
end;
constructor TTransRep.Init( AParent: PWindowsObject; ATitle, AccN: PChar; Last: boolean);
begin
TDialog.Init( AParent, ATitle);
StrCopy( GAccNum, AccN);
end;
procedure TTransRep.SetupWindow;
var
Yr,Mo,Dy,DW: word;
MStr : PChar;
begin
TDialog.SetupWindow;
GetDate( Yr, Mo, Dy, DW);
GetMem( MStr, 13);
StrPCopy( MStr, ButtonMonth[ Mo]);
SetDlgItemText( HWindow, 103, MStr);
SetDlgItemText( HWindow, 101, GAccNum);
str( GetBalance( GAccNum):0:2, PStr);
StrPCopy( MStr, PStr);
SetDlgItemText( HWindow, 102, MStr);
CurrMo := Mo;
CurrYr := Yr;
FreeMem( MStr, 13);
end;
procedure TTransRep.Handle103( var Msg: TMessage);
var
MStr : PChar;
begin
if FillList then
begin
GetMem( MStr, 13);
CurrMo := CurrMo - 1;
StrPCopy( MStr, ButtonMonth[ CurrMo]);
SetDlgItemText( HWindow, 103, MStr);
FreeMem( MStr, 13);
end;
end;
function TTransRep.FillList: boolean;
var
Tmp : file of ActRec;
Mn : string[3];
Yr : string[2];
Mo,
Err: integer;
P,
Line: PChar;
begin
FillList := TRUE;
Mn := Months[ CurrMo];
str( CurrYr, PStr);
Yr := copy( PStr, 3, 2);
assign( Tmp, Mn + Yr + '.DTA');
{$I-}
reset( Tmp);
{$I+}
if ioresult <> 0 then
begin
MessageBox( HWindow, 'No more transaction files', 'Transaction Reports',
mb_IconStop or mb_OK);
FillList := FALSE;
exit;
end
else
begin
GetMem( P, 80);
GetMem( Line, 80);
SendDlgItemMsg( 104, lb_ResetContent, 0, 0);
repeat
read( Tmp, GActR);
if StrComp( GActR.AccNum, GAccNum) = 0 then
begin
StrCopy( Line, GActR.Date);
StrCat( Line, ' (');
StrCat( Line, GActR.Trans);
StrCat( Line, ') ');
StrCat( Line, GActR.Notes);
StrCat( Line, ' ');
if GActR.Debit <> 0.0 then
begin
str( -GActR.Debit:0:2, PStr);
StrPCopy( P, PStr);
StrCat( Line, P);
StrCat( Line, ' ');
end;
if GActR.Credit <> 0.0 then
begin
str( GActR.Credit:0:2, PStr);
StrPCopy( P, PStr);
StrCat( Line, P);
StrCat( Line, ' ');
end;
Err := SendDlgItemMsg( 104, lb_AddString, 0, longint( Line));
end;
until System.FilePos( Tmp) = System.FileSize( Tmp);
FreeMem( Line, 80);
FreeMem( P, 80);
end;
close( Tmp);
end;
{ --------------------- }
{ TTranfer Methods: }
{ --------------------- }
procedure TTransfer.FillCombo( Item: integer; Except: PChar);
var
Temp: PChar;
begin
GetMem( Temp, 20);
assign( AccF, AccFile);
reset( AccF);
SendDlgItemMsg( Item, cb_ResetContent, 0, 0);
repeat
read( AccF, GAccR);
StrCopy( Temp, GAccR.AccNum);
if StrComp( Temp, Except) <> 0 then
SendDlgItemMsg( Item, cb_AddString, 0, longint( Temp));
until FilePos( AccF) = FileSize( AccF);
close( AccF);
GetDlgItemText( HWindow, Item, Temp, 20);
if StrLen( Temp) = 0 then
SendDlgItemMsg( Item, cb_SetCurSel, 0, 0);
FreeMem( Temp, 20);
end;
function TTransfer.GetBalance( AccN: PChar): real;
begin
assign( AccF, AccFile);
reset( AccF);
repeat
read( AccF, GAccR);
until ( FilePos( AccF) = FileSize( AccF)) or ( StrComp( GAccR.AccNum, AccN) = 0);
if StrComp( GAccR.AccNum, AccN) = 0 then
begin
GetBalance := GAccR.AccBal;
RecN := FilePos( AccF) - 1;
end
else
begin
GetBalance := 0.0;
RecN := 0;
end;
close( AccF);
end;
procedure TTransfer.UpdateBalance;
begin
assign( AccF, AccFile);
reset( AccF);
System.Seek( AccF, RecN);
read( AccF, GAccR);
GAccR.AccBal := GActR.Balance;
System.Seek( AccF, RecN);
write( AccF, GAccR);
close( AccF);
end;
procedure TTransfer.UpdateActivity;
var
Tmp : file of ActRec;
Mn : string[3];
Yr : string[2];
Mo,
Err: integer;
begin
PStr := StrPas( GActR.Date);
val( copy( PStr, 1, 2), Mo, Err);
Mn := Months[ Mo];
Yr := copy( PStr, 7, 2);
assign( Tmp, Mn + Yr + '.DTA');
{$I-}
reset( Tmp);
{$I+}
if ioresult <> 0 then rewrite( Tmp)
else System.Seek( Tmp, FileSize( Tmp));
write( Tmp, GActR);
close( Tmp);
end;
function TTransfer.CanClose: boolean;
var
CC : boolean;
Amnt: real;
Err,
FLen: integer;
Temp: PChar;
Date: array[0..9] of char;
begin
CC := TDialog.CanClose;
if CC then
begin
GetMem( Temp, 10);
FLen := GetDlgItemText( HWindow, 103, Date, 9);
if FLen = 0 then
begin
MessageBox( HWindow, 'A transaction date is required in MM/DD/YY format',
'Missing field', mb_IconStop or mb_OK);
FreeMem( Temp, 10);
CanClose := FALSE;
exit;
end;
FLen := GetDlgItemText( HWindow, 104, Temp, 10);
if FLen = 0 then
begin
MessageBox( HWindow, 'A transaction amount is required in 1234.56 format',
'Missing field', mb_IconStop or mb_OK);
FreeMem( Temp, 10);
CanClose := FALSE;
exit;
end
else
begin
PStr := StrPas( Temp);
val( PStr, Amnt, Err);
if Err <> 0 then
begin
MessageBox( HWindow, 'Invalid transaction amount',
'Invalid field', mb_IconStop or mb_OK);
FreeMem( Temp, 10);
CanClose := FALSE;
exit;
end;
end;
StrCopy( GActR.Date, Date);
GActR.Balance := Amnt;
FreeMem( Temp, 10);
end;
end;
procedure TTransfer.OK( var Msg: TMessage);
var
FromAcc,
ToAcc : PChar;
Amnt : real;
begin
if CanClose then
begin
GetMem( FromAcc, 20);
GetMem( ToAcc, 20);
Amnt := GActR.Balance;
GetDlgItemText( HWindow, 101, FromAcc, 20);
GetDlgItemText( HWindow, 102, ToAcc, 20);
StrCopy( GActR.Trans, 'Transfer');
StrCopy( GActR.AccNum, FromAcc);
GActR.Credit := 0.0;
GActR.Debit := Amnt;
GActR.Balance := GetBalance( FromAcc) - Amnt;
StrCopy( GActR.Notes, 'To ');
StrCat( GActR.Notes, ToAcc);
UpdateActivity;
UpdateBalance;
StrCopy( GActR.AccNum, ToAcc);
GActR.Credit := Amnt;
GActR.Debit := 0.0;
GActR.Balance := GetBalance( ToAcc) + Amnt;
StrCopy( GActR.Notes, 'From ');
StrCat( GActR.Notes, FromAcc);
UpdateActivity;
UpdateBalance;
FreeMem( FromAcc, 20);
FreeMem( ToAcc, 20);
EndDialog( HWindow, id_OK);
end;
end;
constructor TTransfer.Init( AParent: PWindowsObject; ATitle: PChar);
begin
TDialog.Init( AParent, ATitle);
end;
procedure TTransfer.SetupWindow;
begin
TDialog.SetupWindow;
FillCombo( 101, '');
FillCombo( 102, '');
end;
procedure TTransfer.Handle101( var Msg: TMessage);
var
AccN: PChar;
begin
if Msg.LParamHi = cbn_Killfocus then
begin
GetMem( AccN, 20);
GetDlgItemText( HWindow, 101, AccN, 20);
FillCombo( 102, AccN);
FreeMem( AccN, 20);
end;
end;
procedure TTransfer.Handle102( var Msg: TMessage);
var
AccN: PChar;
begin
if Msg.LParamHi = cbn_Killfocus then
begin
GetMem( AccN, 20);
GetDlgItemText( HWindow, 102, AccN, 20);
FillCombo( 101, AccN);
FreeMem( AccN, 20);
end;
end;
{ --------------------- }
{ TTransact Methods: }
{ --------------------- }
constructor TTransact.Init( AParent: PWindowsObject; ATitle, AccN, AccT: PChar; M: boolean);
begin
TDialog.Init( AParent, ATitle);
StrCopy( GAccNum, AccN);
StrCopy( GAccT, AccT);
GMulti := M;
end;
procedure TTransact.SetupWindow;
begin
TDialog.SetupWindow;
assign( ActF, 'BANKACT.DTA');
rewrite( ActF);
Activity := FALSE;
GetAccountBalance;
SetDlgItemText( HWindow, 101, GAccNum);
SetDlgItemText( HWindow, 102, GAccBal);
FillTransactCombo;
end;
function TTransact.CanClose: boolean;
var
FErr,
CC : boolean;
FLen: integer;
TmpC: array[0..10] of char;
begin
CC := TDialog.CanClose;
CanClose := CC;
if CC then
begin
FErr := FALSE;
FLen := GetDlgItemText( HWindow, 104, TmpC, 9);
if FLen = 0 then
begin
MessageBox( HWindow, 'Each transaction must have a date',
'Missing field', mb_IConStop or mb_OK);
FErr := TRUE;
end;
FLen := GetDlgItemText( HWindow, 106, TmpC, 10);
if FLen = 0 then
begin
FLen := GetDlgItemText( HWindow, 107, TmpC, 10);
if FLen = 0 then
begin
MessageBox( HWindow, 'Each transaction must have a credit or debit amount',
'Missing field', mb_IConStop or mb_OK);
FErr := TRUE;
end;
end;
if not FErr then CC := TRUE;
end;
CanClose := CC;
end;
procedure TTransact.OK( var Msg: TMessage);
var
CC : boolean;
ActR: ActRec;
TmpC: array[0..10] of Char;
begin
CC := CanClose;
if CC then
begin
GOldBal := GNewBal;
StrCopy( GActR.AccNum, GAccNum);
GetDlgItemText( HWindow, 103, GActR.Trans, 31);
GActR.Balance := GNewBal;
if GetDlgItemText( HWindow, 105, TmpC, 6) > 0 then
begin
GActR.Check := GCheck;
inc( GCheck);
end
else GActR.Check := 0;
write( ActF, GActR);
Activity := TRUE;
end;
if not GMulti then
begin
if CC then
begin
close( ActF);
UpdateActivity;
UpdateBalance;
EndDialog( HWindow, id_OK);
end;
end
else ClearFields;
end;
procedure TTransact.Cancel( var Msg: TMessage);
begin
if GMulti and Activity then
begin
close( ActF);
if MessageBox( HWindow, 'There have been changes. Save them?',
'Transaction Entries', mb_IConQuestion or mb_YesNo) = id_Yes then
begin
UpdateActivity;
UpdateBalance;
end
else erase( ActF);
end
else erase( ActF);
EndDialog( HWindow, id_Cancel);
end;
procedure TTransact.GetAccountBalance;
begin
assign( AccF, 'BANKACC.DTA');
reset( AccF);
repeat
read( AccF, GAccR);
until ( StrComp( GAccR.AccNum, GAccNum) = 0);
close( AccF);
str( GAccR.AccBal:0:2, PStr);
StrPCopy( GAccBal, PStr);
GCheck := GAccR.AccCheck;
GOldBal := GAccR.AccBal;
end;
procedure TTransact.UpdateActivity;
const
Months: array[1..12] of string[3] = ( 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN',
'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC');
var
Tmp : file of ActRec;
Mn : string[3];
Yr : string[2];
Mo,
Err: integer;
begin
assign( ActF, 'BANKACT.DTA');
reset( ActF);
repeat
read( ActF, GActR);
PStr := StrPas( GActR.Date);
val( copy( PStr, 1, 2), Mo, Err);
Mn := Months[ Mo];
Yr := copy( PStr, 7, 2);
assign( Tmp, Mn + Yr + '.DTA');
{$I-}
reset( Tmp);
{$I+}
if ioresult <> 0 then rewrite( Tmp)
else System.Seek( Tmp, FileSize( Tmp));
write( Tmp, GActR);
close( Tmp);
until FilePos( ActF) = FileSize( ActF);
close( ActF);
erase( ActF);
end;
procedure TTransact.UpdateBalance;
begin
assign( AccF, 'BANKACC.DTA');
reset( AccF);
repeat
read( AccF, GAccR);
until ( StrComp( GAccR.AccNum, GAccNum) = 0);
seek( AccF, FilePos( AccF) - 1);
GAccR.AccBal := GNewBal;
GAccR.AccCheck := GCheck;
write( AccF, GAccR);
close( AccF);
end;
procedure TTransact.FillTransactCombo;
var
TrnF : file of TransRec;
TrnR : TransRec;
Temp : PChar;
MiscIx: integer;
begin
GetMem( Temp, 31);
assign( TrnF, 'BANKTRN.DTA');
{$I-}
reset( TrnF);
{$I+}
if ioresult = 0 then
begin
repeat
read( TrnF, TrnR);
StrCopy( Temp, TrnR.TransType);
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
until FilePos( TrnF) = FileSize( TrnF);
end
else
begin
rewrite( TrnF);
Temp := 'Gas';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
Temp := 'Groceries';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
Temp := 'Living expenses';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
Temp := 'Loan';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
Temp := 'Miscellaneous';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
Temp := 'Utilities';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
StrCopy( TrnR.TransType, Temp);
write( TrnF, TrnR);
end;
close( TrnF);
if StrComp( GAccT, 'Loan') <> 0 then
begin
Temp := 'Miscellaneous';
MiscIx := SendDlgItemMsg( 103, cb_FindString, 1, longint( Temp));
SendDlgItemMsg( 103, cb_SetCurSel, MiscIx, 0);
end
else
begin
SendDlgItemMsg( 103, cb_ResetContent, 0, 0);
Temp := 'Loan';
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
SendDlgItemMsg( 103, cb_SetCurSel, 0, 0);
end;
end;
procedure TTransact.ClearFields;
begin
SetDlgItemText( HWindow, 104, PChar( 0));
SetDlgItemText( HWindow, 105, PChar( 0));
SetDlgItemText( HWindow, 106, PChar( 0));
SetDlgItemText( HWindow, 107, PChar( 0));
SetDlgItemText( HWindow, 108, PChar( 0));
end;
procedure TTransact.HandleTrans( var Msg: TMessage);
var
TrnF : file of TransRec;
TrnR : TransRec;
Trans: array[0..31] of char;
WTransF,
FLen : integer;
Temp : PChar;
begin
if Msg.LParamHi = cbn_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 103, Trans, 31);
if FLen > 0 then
begin
GetMem( Temp, 31);
StrCopy( Temp, Trans);
if SendDlgItemMsg( 103, cb_FindString, 1, longInt( Temp)) = cb_Err then
begin
assign( TrnF, 'BANKTRN.DTA');
reset( TrnF);
seek( TrnF, FileSize( TrnF));
StrCopy( TrnR.TransType, Trans);
write( TrnF, TrnR);
close( TrnF);
StrCopy( Temp, Trans);
SendDlgItemMsg( 103, cb_AddString, 0, longint( Temp));
end;
FreeMem( Temp, 31);
end;
end;
end;
procedure TTransact.HandleDate( var Msg: TMessage);
var
Date: array[0..9] of char;
FLen: integer;
begin
if Msg.LParamHi = en_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 104, Date, 9);
if ( FLen > 0) and ( FLen <> 8) then
MessageBox( HWindow, 'Dates should have the MM/DD/YY format, such as 05/31/90',
'Field format', mb_IconInformation or mb_OK)
else if FLen = 8 then
StrCopy( GActR.Date, Date);
end
else DefWndProc( Msg);
end;
procedure TTransact.HandleCheck( var Msg: TMessage);
var
Check : array[0..6] of char;
CheckN,
Err,
FLen : integer;
begin
if Msg.LParamHi = en_SetFocus then
begin
FLen := GetDlgItemText( HWindow, 105, Check, 6);
if FLen = 0 then
begin
str( GCheck, PStr);
StrPCopy( Check, PStr);
SetDlgItemText( HWindow, 105, Check);
end;
end
else if Msg.LParamHi = en_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 105, Check, 6);
if FLen <> 0 then
begin
val( Check, CheckN, Err);
if Err <> 0 then
MessageBox( HWindow, 'A numeric check number is expected, such as 1234',
'Field format', mb_IconInformation or mb_OK)
else
GCheck := CheckN;
end;
end
else DefWndProc( Msg);
end;
procedure TTransact.HandleCredit( var Msg: TMessage);
var
Credit: array[0..10] of char;
Amnt : real;
Err,
FLen : integer;
begin
if Msg.LParamHi = en_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 106, Credit, 10);
if FLen > 0 then
begin
PStr := StrPas( Credit);
val( PStr, Amnt, Err);
if Err <> 0 then
MessageBox( HWindow, 'The credit/deposit amount must be numeric, such as 100.95',
'Field format', mb_IconInformation or mb_OK)
else
begin
GActR.Credit := Amnt;
GActR.Debit := 0.0;
GNewBal := GOldBal + Amnt;
str( GNewBal:0:2, PStr);
StrPCopy( GAccBal, PStr);
SetDlgItemText( HWindow, 102, GAccBal);
end;
end;
end
else DefWndProc( Msg);
end;
procedure TTransact.HandleDebit( var Msg: TMessage);
var
Debit : array[0..10] of char;
Amnt : real;
Err,
FLen : integer;
begin
if Msg.LParamHi = en_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 107, Debit, 10);
if FLen > 0 then
begin
PStr := StrPas( Debit);
val( PStr, Amnt, Err);
if Err <> 0 then
MessageBox( HWindow, 'The debit/withdraw amount must be numeric, such as 1500.95',
'Field format', mb_IconInformation or mb_OK)
else
begin
GActR.Debit := Amnt;
GActR.Credit := 0.0;
GNewBal := GOldBal - Amnt;
str( GNewBal:0:2, PStr);
StrPCopy( GAccBal, PStr);
SetDlgItemText( HWindow, 102, GAccBal);
end;
end;
end
else DefWndProc( Msg);
end;
procedure TTransact.HandleNote( var Msg: TMessage);
var
N : array[0..66] of char;
FLen : integer;
begin
if Msg.LParamHi = en_KillFocus then
begin
FLen := GetDlgItemText( HWindow, 108, N, 66);
if FLen > 0 then
StrCopy( GActR.Notes, N);
end;
end;
end.